package proyectoFC_2_3_3.koyicabuto;

import java.util.ArrayList;
import java.util.List;

import proyectoFC_2_3_3.koyicabuto.funciones.FuncionesBaseDatos;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.Data;
import android.util.Log;
import android.view.View;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class ListaContactosActivity extends ListActivity{
	
	private SQLiteDatabase gruposDataBase = null;
	
	private FuncionesBaseDatos funcionesBaseDatos = new FuncionesBaseDatos();
	
	private ListView listaContactos = null;
	private Cursor mCursor = null;
	
	private Long idGrupoSeleccionado = null;
	
	//Cada ITEM es un CONTACT_ID
	private List<Long> listaSeleccion = new ArrayList<Long>();
	
	public void onCreate(Bundle savedInstance) {
		super.onCreate(savedInstance);	
		
		 //Obtenemos las variables que vienen de GruposListViewActivity
		 Bundle extras = getIntent().getExtras();
		 if(extras != null){
			 idGrupoSeleccionado = extras.getLong("idGrupoSeleccionado");
		 }
		 
		 setTitle("Añadir nuevos contactos al grupo");
		 setContentView(R.layout.listacontactos);
		 
		 if(idGrupoSeleccionado != null){
			String cadenaId = cargaPersonalGrupo(idGrupoSeleccionado);
				
			if(cadenaId != null){
			    // Setup the list
				mCursor = getContentResolver().query(
						  Data.CONTENT_URI, new String[] { Data._ID, Data.DISPLAY_NAME, Phone.NUMBER, Data.CONTACT_ID},
						  Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "' AND " + Phone.NUMBER + " IS NOT NULL " + 
						  "AND " + Data.CONTACT_ID + " NOT IN " + cadenaId , null, Data.DISPLAY_NAME + " ASC ");
				startManagingCursor(mCursor);
			}else{
				// Setup the list
				mCursor = getContentResolver().query(
						  Data.CONTENT_URI, new String[] { Data._ID, Data.DISPLAY_NAME, Phone.NUMBER, Data.CONTACT_ID},
						  Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "' AND " + Phone.NUMBER + " IS NOT NULL ", 
						  null, Data.DISPLAY_NAME + " ASC ");
				startManagingCursor(mCursor);
			}
		 }
		 
        // Setup the list
        ListAdapter adapter = new CustomCursorAdapterCheck(this, mCursor, this);
        listaContactos = this.getListView();
        listaContactos.setAdapter(adapter);  
        listaContactos.setFocusable(false);  

	}
	
	public void getCheckedItems(Long id){
		listaSeleccion.add(id);
	}
	
	public void onClickBotonVolver(View view){
		Intent intent = new Intent(this, TabPersonasGrupoActivity.class);
		intent.putExtra("idGrupoSeleccionado", idGrupoSeleccionado);
	    setResult(RESULT_OK, intent);
	    finish();
	}
	
	public void guardarSeleccion(View view){
		boolean error = false;		
		String nombrePersona = null;
		String numeroPersona = null;
		
		gruposDataBase = funcionesBaseDatos.conectaWritableBaseDeDatos(this);
		
		try{
			if(gruposDataBase != null){
				for(Long iteracion:listaSeleccion){
					
					Cursor cursor = view.getContext().getContentResolver()
									 .query(Data.CONTENT_URI, new String[] { Data.DISPLAY_NAME, Phone.NUMBER}, 
											Data.CONTACT_ID + "=" + iteracion + " AND " + 
											Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'", null, null);
					
					if(cursor.moveToFirst()){
						do{
							nombrePersona = cursor.getString(0);
							numeroPersona = cursor.getString(1);
						}while(cursor.moveToNext());
					}
					
					gruposDataBase.execSQL("INSERT INTO PERSONAL_GRUPOS (PG_PER_ID, PG_PER_NOMBRE, PG_PER_NUMERO, PG_GR_ID, PG_USUARIO) " +
										   "VALUES(" + iteracion + ", " + "'" + nombrePersona + "'" + ", " + 
										   "'" + numeroPersona + "'" +  
										   ", " + idGrupoSeleccionado + ", " + Integer.valueOf(0) + ")") ;
				}
				
				funcionesBaseDatos.cierraBaseDeDatos(gruposDataBase);
			}
			
		}catch (Exception e) {
			error = true;
			Log.e("ERROR: ", "Excepcion al guardarSeleccion: " +e.getMessage());
		}
		if(!error){
			Toast.makeText(this, "Personas añadidas al grupo correctamente.", Toast.LENGTH_SHORT).show();
		}
	}
	
	private String cargaPersonalGrupo(Long idGrupo){
		List<Long> listaId = new ArrayList<Long>();
		String cadena = null;
		String[] parametros = new String[]{idGrupo.toString()};
		String selectGrupo = "SELECT PG_PER_ID FROM PERSONAL_GRUPOS WHERE PG_GR_ID = ? ";
		
		gruposDataBase = funcionesBaseDatos.conectaBaseDeDatos(this);	
		
		try{
			if(gruposDataBase != null){
				Cursor cursor = gruposDataBase.rawQuery(selectGrupo, parametros);
	
				if(cursor.moveToFirst()){
					do{
						listaId.add(cursor.getLong(0));
					}while(cursor.moveToNext());
				}
				funcionesBaseDatos.cierraBaseDeDatos(gruposDataBase);
			}			
		
		}catch (Exception e) {
			System.out.println("Excepcion en cargaPersonalGrupo: " +e.getMessage());
		}
		
		if(listaId != null && !listaId.isEmpty()){
			cadena = "(";
			for(Long iteracion:listaId){
				cadena = cadena + iteracion + ",";
			}
			cadena = cadena.substring(0, cadena.length() - 1);
			cadena = cadena + ")";
		}
		
		return cadena;
	}
}
